﻿using System;

namespace Logic.Units
{
    public interface IUnit : ICloneable
    {
        /// <summary>
        ///     Health Points
        /// </summary>
        int HP { get; }

        /// <summary>
        ///     Armor Points
        /// </summary>
        int AM { get; }

        /// <summary>
        ///     Урон
        /// </summary>
        int Damage { get; }

        /// <summary>
        ///     Удача. От 0 до 100 (в процентах)
        /// </summary>
        byte GoodLuck { get; }

        /// <summary>
        ///     Признак принадлежности войск
        /// </summary>
        UserState State { get; }

        /// <summary>
        ///     Количестве в отряде
        /// </summary>
        int Count { get; set; }

        /// <summary>
        ///     Добавление количества
        /// </summary>
        /// <param name="unit">Отряд</param>
        void Add(IUnit unit);

        /// <summary>
        ///     HP всего отряда
        /// </summary>
        int ActualHp { get; set; }

        /// <summary>
        ///     Атака
        /// </summary>
        int Attack { get; }

        /// <summary>
        ///     Защита
        /// </summary>
        int Protection { get; }

        /// <summary>
        ///     Принять урон
        /// </summary>
        void GetDone(IUnit enemy);

        /// <summary>
        ///     Изменение ActualHp
        /// </summary>
        event Action ChangeActualHp;

        /// <summary>
        ///     Изменение
        /// </summary>
        /// Count
        event Action ChangeCount;
    }
}